package com.example.jpa.enums;

import org.springframework.core.convert.converter.Converter;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * @author 朝花不迟暮
 * @version 1.0
 * @date 2020/12/12 18:55
 */
public class IntegerToEnumConverter<T extends BaseEnum> implements Converter<Integer, T>
{
    private Map<Integer, T> enumMap = new HashMap<>();

    public IntegerToEnumConverter(Class<T> enumType)
    {
        T[] enums = enumType.getEnumConstants();
        for (T e : enums)
        {
            enumMap.put(e.getCode(), e);
        }
    }

    @Override
    public T convert(Integer source)
    {
        T t = enumMap.get(source);
        if (Objects.isNull(t))
        {
            throw new IllegalArgumentException("无法匹配对应的枚举类型");
        }
        return t;
    }

}
